package br.com.esporte.view.site.component.listaTime.item;

import java.util.List;

import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.Model;

import br.com.esporte.model.Advertencia;
import br.com.esporte.model.Jogador;
import br.com.esporte.model.TipoAdvertenciaEnum;
import br.com.esporte.view.infra.component.ComponenteGenerico;
import br.com.esporte.view.site.component.cartao.CartaoComponent;

/**
 * 
 * @author Milton Domingues
 *
 */
public class ItemTime extends ComponenteGenerico {

	private static final long serialVersionUID = 8405329928463027046L;

	private static final String JOGADOR = "jogador";

	public static final String AMARELO_ID_1 = "amarelo1";
	public static final String AMARELO_ID_2 = "amarelo2";

	public static final String AZUL_ID_1 = "azul1";
	public static final String AZUL_ID_2 = "azul2";

	public static final String VERMELHO_ID = "vermelho";

	public static final String PONTOS_ID = "pontos";

	private Jogador jogador;

	public ItemTime(String id, Jogador jogador) {
		super(id);
		this.jogador = jogador;
		montarComponente();
	}

	private CartaoComponent criarCartao(String idCartao, TipoAdvertenciaEnum tipo, List<Advertencia> list, int qtdTrue){
		boolean advertido = qtdCartaoAdvertertido(list, tipo, qtdTrue);
		CartaoComponent cartao = new CartaoComponent(idCartao, tipo, advertido);
		return cartao;
	}

	@Override
	public void montarComponente() {
		add(new Label(JOGADOR, jogador.getUsuario().getNome()));
		add(criarCartao(AMARELO_ID_1, TipoAdvertenciaEnum.AMARELO, jogador.getAdvertencias(), 1));
		add(criarCartao(AMARELO_ID_2, TipoAdvertenciaEnum.AMARELO, jogador.getAdvertencias(), 2));
		add(criarCartao(AZUL_ID_1, TipoAdvertenciaEnum.AZUL, jogador.getAdvertencias(), 1));
		add(criarCartao(AZUL_ID_2, TipoAdvertenciaEnum.AZUL, jogador.getAdvertencias(), 2));
		add(criarCartao(VERMELHO_ID, TipoAdvertenciaEnum.VERMELHO, jogador.getAdvertencias(), 1));
		Integer pontos = jogador.getPonto();
		add(new Label(PONTOS_ID, new Model<Integer>(pontos != null ? pontos : 0)));
	}

	private boolean qtdCartaoAdvertertido(List<Advertencia> list, TipoAdvertenciaEnum tipo, int qtdTrue){
		int qtd = 0;
		for (Advertencia advertencia : list) {
			if(advertencia.getTipoAdvertencia().equals(tipo)){
				qtd ++;
			}
		}
		if(qtd >= qtdTrue){
			return true;
		}
		return false;
	}

}
